package com.mlh.dp.基础题目;

/**
 * @author 缪林辉
 * @date 2024/4/17 10:38
 * @DESCRIPTION
 */
// 给你一个整数数组 cost ，其中 cost[i] 是从楼梯第 i 个台阶向上爬需要支付的费用。
// 一旦你支付此费用，即可选择向上爬一个或者两个台阶。
// 你可以选择从下标为 0 或下标为 1 的台阶开始爬楼梯。
// 请你计算并返回达到楼梯顶部的最低花费。
public class 使用最小花费爬楼梯 {
    //这边稍微有点迷惑就是楼梯和付费的关系
    //这边我定义的res是跳到该楼梯并支付该楼梯下一条的费用，这样到顶楼的费用就是顶楼的前一层和前二层比较大小
    public int method1(int[] cost) {
        int len=cost.length;
        int[] res=new int[len];
        res[0]=cost[0];
        res[1]=cost[1];
        for (int i = 2; i < len; i++) {
            res[i]=Math.min(res[i-1],res[i-2])+cost[i];
        }
        return Math.min(res[len-1],res[len-2]);
    }
}
